{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "36a5425e",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_text_splitters import CharacterTextSplitter\n",
    "from langchain_community.vectorstores import Chroma\n",
    "from langchain_community.document_loaders import TextLoader\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "355712c8",
   "metadata": {},
   "source": [
    "# ollama 加载bge-m3向量化模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8847c1e7",
   "metadata": {},
   "source": [
    "ollama官网搜索 https://ollama.com/library/bge-m3"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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CBAgQIAAAQIECBAgQOAgAbHUQXx2JkCAAAECBAgQIECAAAECBAgQ2E9ALLWfm70IECBAgAABAgQIECBAgAABAgQOEhBLHcRnZwIECBAgQIAAAQIECBAgQIAAgf0ExFL7udmLAAECBAgQIECAAAECBAgQIEDgIAGx1EF8diZAgAABAgQIECBAgAABAgQIENhPQCy1n5u9CBAgQIAAAQIECBAgQIAAAQIEDhIQSx3EZ2cCBAgQIECAAAECBAgQIECAAIH9BMRS+7nZiwABAgQIECBAgAABAgQIECBA4CABsdRBfHYmQIAAAQIECBAgQIAAAQIECBDYT0AstZ+bvQgQIECAAAECBAgQIECAAAECBA4SEEsdxGdnAgQIECBAgAABAgQIECBAgACB/QTEUvu52YsAAQIECBAgQIAAAQIECBAgQOAgAbHUQXx2JkCAAAECBAgQIECAAAECBAgQ2E9ALLWfm70IECBAgAABAgQIECBAgAABAgQOEhBLHcRnZwIECBAgQIAAAQIECBAgQIAAgf0ExFL7udmLAAECBAgQIECAAAECBAgQIEDgIAGx1EF8diZAgAABAgQIECBAgAABAgQIENhPQCy1n5u9CBAgQIAAAQIECBAgQIAAAQIEDhIQSx3EZ2cCBAgQIECAAAECBAgQIECAAIH9BMRS+7nZiwABAgQIECBAgAABAgQIECBA4CABsdRBfHYmQIAAAQIECBAgQIAAAQIECBDYT0AstZ+bvQgQIECAAAECBAgQIECAAAECBA4SEEsdxGdnAgQIECBAgAABAgQIECBAgACB/QTEUvu52YsAAQIECBAgQIAAAQIECBAgQOAgAbHUQXx2JkCAAAECBAgQIECAAAECBAgQ2E9ALLWfm70IECBAgAABAgQIECBAgAABAgQOEhBLHcRnZwIECBAgQIAAAQIECBAgQIAAgf0ExFL7udmLAAECBAgQIECAAAECBAgQIEDgIAGx1EF8diZAgAABAgQIECBAgAABAgQIENhPQCy1n5u9CBAgQIAAAQIECBAgQIAAAQIEDhIQSx3EZ2cCBAgQOCOBp3/52s3w591fbez0J+/Gkq/97NHGogoQIECAAAECBAgQILCngFhqTzi7ESBAgMDUAr+qoqDh5KjOicLG1/7y6X5Ni6X2c7MXAQIECBCYh8CTj++8+eb7DzudefKLO2+++d7D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ECBAgMC8BL777rsnT558/fXX8+qW3hA4hYBY6hTq2iRAgACBIYGr+Gdoi3UECBAgQIAAgeUIOOdZzlwaycECYqmDCVVAgAABAtMJfPHFF1dXV+6Zmk5UTQQIECBAgMCMBL777rurq6svvvhiRn3SFQInFRBLnZRf4wQIECDQE7i6unry5Mnz589fvnwpn+rxWEGAAAECBAicn8B333338uXL58+fP3nyxCulzm/+9PiYAmKpY+qqmwABAgT2Evj666+vrq6ePn36yB8CBAgQIECAwCIEnj59enV15X1Se50b2mnJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBAgQIAAAQIECBAgQGDJAmKpJc+usREgQIAAAQIECBAgQIAAAQIEZisglprt1OgYAQIECBxH4NHPXrsZ/rz7yXHqVysBAgQIECBAgAABAtsJiKW2c1KKAAECBI4u8Kt3Y1pU/uvdX03erlhqclIVEiBAgAABAgQIENhLQCy1F5udCBAgQGB6gcFY6ubNm6/97NGkjYmlJuVUGQECBAgQIECAAIG9BcRSe9PZkQABAgSmFahjqdf+8mlV79O/rB62u9msmaY9sdQ0jmohQIAAAQIECBAgcKiAWOpQQfsTIECAwEQC3VhqlfKjLJZ6+rPX24f8svWrJsOqNnfeG5Vtfe1nn5TvlvqkenYw3JP1qx+lyn8Unx2sN/Xv2BrtxkQUqiFAgAABAgQIECBwEQJiqYuYZoMkQIDAOQh0Y6kUEjUP8Q085VcnUynASqlSESSlerKNcbGOrlIs9VoWeIX9X6/v1ap3e/1n9U1cq/FunIOyPhIgQIAAAQIECBCYj4BYaj5zoScECBC4cIGBuCf/fXl1ulTdx7Rareo4Kb4T/dHPXmvWp9iom1ilAk1KVcZSN29WBbKEqyqQytfp2LpuXPgEGj4BAgQIECBAgACBHQXEUjuCKU6AAAECxxIYiKWyZ/EGtsb7mJp7qdpu5clRenwvK5aCp04sldpKD+g1t0el26nim9d36EbbIUsECBAgQIAAAQIECAwJiKWGVKwjQIAAgRMI1IlPdZdT5x6lVboHqvskXv17+lKWlG+Odz+lWCreVFUNas9Y6mbMrcRSJzgyNEmAAAECBAgQILBUAbHUUmfWuAgQIHB2AkUs1eZQ9V1Lna356OpMqnkD+oa7pdKLzHe8W6qIpZq28n5YJkCAAAECBAgQIEBgJwGx1E5cChMgQIDA8QS6wVO60enmyP1Tq9Wjn737l0+bAKuOitLNUPW7olIIVX9ctfdV7RVLNb+tr3gqMHbjeDJqJkCAAAECBAgQILBMAbHUMufVqAgQIHCGAt1YatVGSOm95vkzetWbpUIs1SZN1br6d+rV7zjvbG2r2C+WWjWxV1tTHZydobkuEyBAgAABAgQIEDilgFjqlPraJkCAAIFMoB9LNb9u7+bN8lG+lAilN0ZlUdG7n6QbmtKv3ityq9d/9jQV3jOWCj2uu9rtRjYYiwQIECBAgAABAgQIbBQQS20kUoAAAQIECBAgQIAAAQIECBAgQGB6AbHU9KZqJECAAAECBAgQIECAAAECBAgQ2CggltpIpAABAgQIECBAgAABAgQIECBAgMD0AmKp6U3VSIAAAQIECBAgQIAAAQIECBAgsFFALLWRSAECBAgQIECAAAECBAgQIECAAIHpBcRS05uqkQABAgQIECBAgAABAgQIECBAYKOAWGojkQIECBAgQIAAAQIECBAgQIAAAQLTC4ilpjdVIwECBAgQIECAAAECBAgQIECAwEYBsdRGIgUIECBAgAABAgQIECBAgAABAgSmFxBLTW+qRgIECBAgQIAAAQIECBAgQIAAgY0CYqmNRAoQIECAAAECBAgQIECAAAECBAhMLyCWmt5UjQQIECBAgAABAgQIECBAgAABAhsFxFIbiRQgQIAAAQIECBAgQIAAAQIECBCYXkAsNb2pGgkQIECAAAECBAgQIECAAAECBDYKiKU2EilAgAABAgQIECBAgAABAgQIECAwvYBYanpTNRIgQIAAAQIECBAgQIAAAQIECGwUEEttJFKAAAECBAgQIECAAAECBAgQIEBgegGx1PSmaiRAgAABAgQIECBAgAABAgQIENgoIJbaSKQAAQIECBAgQIAAAQIECBAgQIDA9AJiqelN1UiAAAECBAgQIECAAAECBAgQILBRQCy1kUgBAgQIECBAgAABAgQIECBAgACB6QXEUtObqpEAAQIECBAgQIAAAQIECBAgQGCjgFhqI5ECBAgQIECAAAECBAgQIECAAAEC0wuIpaY3VSMBAgQIECBAgAABAgQIECBAgMBGAbHURiIFCBAgQIAAAQIECBAgQIAAAQIEphcQS01vqkYCBAgQIECAAAECBAgQIECAAIGNAmKpjUQKECBAgAABAgQIECBAgAABAgQITC8glpreVI0ECBAgQIAAAQIECBAgQIAAAQIbBcRSG4kUIECAAAECBAgQIECAAAECBAgQmF5ALDW9qRoJECBAgAABAgQIECBAgAAB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"
    }
   },
   "cell_type": "markdown",
   "id": "71cc62a8",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "013bdb4f",
   "metadata": {},
   "source": [
    "加载命令\n",
    "```shell\n",
    "ollama pull bge-m3\n",
    "```"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "f6dbb244",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "83ef1533",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 为什么选择OllamaEmbeddings,因为cpu都能把ollama跑起来。\n",
    "\n",
    "from langchain_ollama import OllamaEmbeddings\n",
    "embedding_model = OllamaEmbeddings(\n",
    "    base_url=\"http://host.docker.internal:11434\", # 仅仅因为我的环境在docker里，ollama装在windows系统里。\n",
    "    # base_url=\"http://localhost:11434\",\n",
    "    model=\"bge-m3:latest\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "462e24d4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "embedding_query[:10] [-0.05038724, 0.013833835, -0.045256667, -0.020232935, -0.021483414, -0.0073969364, -0.0073740603, 0.03267763, 0.01018653, 0.020276431]\n",
      "1024\n"
     ]
    }
   ],
   "source": [
    "embedding_query = embedding_model.embed_query(\n",
    "    text=\"我是测试\"\n",
    ")\n",
    "# 测试下返回的\n",
    "print(\"embedding_query[:10]\", embedding_query[:10])\n",
    "# 维度\n",
    "print(len(embedding_query))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "611612a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建文本加载器实例\n",
    "loader = TextLoader(\n",
    "    file_path=\"asset/01.txt\",\n",
    "    encoding=\"utf-8\"\n",
    ")\n",
    "docments = loader.load()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "3d4fe1e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_spliter = CharacterTextSplitter(\n",
    "    chunk_size=1000,\n",
    "    chunk_overlap=100,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "55a23c04",
   "metadata": {},
   "outputs": [],
   "source": [
    "docs = text_spliter.split_documents(docments)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5dc51f0f",
   "metadata": {},
   "source": [
    "# from_documents方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "1f7ebae9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'langchain_community.vectorstores.chroma.Chroma'>\n"
     ]
    }
   ],
   "source": [
    "db = Chroma.from_documents(\n",
    "    documents=docs,\n",
    "    embedding=embedding_model\n",
    ")\n",
    "print(type(db))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef4f7b51",
   "metadata": {},
   "source": [
    "Chroma主要有两种存储模式： 内存模式 和 持久化模式 。\n",
    "\n",
    "当使用persist_directory参数时，数据会保存到指定目录；如果没有指定，则默认使用内存存储。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "977496b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "idx:0, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:1, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:2, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:3, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "query = \"安徽送变电工程有限公司\"\n",
    "docs = db.similarity_search(query=query)\n",
    "for idx, doc in enumerate(docs):\n",
    "    print(f\"idx:{idx}, page_content={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "00185340",
   "metadata": {},
   "source": [
    "# 持久化persist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "027968ce",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "idx:0, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:1, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:2, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:3, page_content=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "persist_db = Chroma.from_documents(\n",
    "    documents=docs,\n",
    "    embedding=embedding_model,\n",
    "    persist_directory=\"./asset/verctor/chroma\"\n",
    ")\n",
    "query = \"安徽送变电工程有限公司\"\n",
    "docs = db.similarity_search(query=query)\n",
    "for idx, doc in enumerate(docs):\n",
    "    print(f\"idx:{idx}, page_content={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2cf846e5",
   "metadata": {},
   "source": [
    "# similarity_search_by_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "889a2cf3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(query_embedding):1024\n",
      "idx:0, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:1, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:2, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:3, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "# 先将查询文本转换为向量（使用与入库时相同的embedding模型）\n",
    "query = \"安徽送变电工程有限公司\"\n",
    "query_embedding = embedding_model.embed_query(query)  # 得到向量列表（List[float]）\n",
    "print(f\"len(query_embedding):{len(query_embedding)}\")\n",
    "# 用向量搜索相似文档，返回前3条\n",
    "docs = persist_db.similarity_search_by_vector(\n",
    "    embedding=query_embedding,  # 输入向量\n",
    "    k=20,  # 返回3条结果\n",
    "    # filter={\"company_type\": \"电力企业\"}  # 可选：按元数据过滤（假设文档有该元数据）\n",
    ")\n",
    "\n",
    "# 打印结果\n",
    "for idx, doc in enumerate(docs):\n",
    "    print(f\"idx:{idx}, 内容={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91a29eb1",
   "metadata": {},
   "source": [
    "# similarity_search_by_vector_with_relevance_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "4a7b6005",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "相关性分数=1.0979, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "相关性分数=1.0979, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "query_embedding = embedding_model.embed_query(\"安徽送变电工程有限公司\")\n",
    "\n",
    "# 搜索并返回分数（元组：(文档, 分数)）\n",
    "docs_with_scores = persist_db.similarity_search_by_vector_with_relevance_scores(\n",
    "    embedding=query_embedding,\n",
    "    k=2,\n",
    "    where_document={\"$contains\": \"能源强国\"}  # 可选：按文档内容过滤（包含特定字符串）\n",
    ")\n",
    "\n",
    "# 打印结果（分数通常在0~1之间，具体取决于嵌入模型）\n",
    "for doc, score in docs_with_scores:\n",
    "    print(f\"相关性分数={score:.4f}, 内容={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07592543",
   "metadata": {},
   "source": [
    "# similarity_search_with_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "30b24d19",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "分数=1.0979, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "分数=1.0979, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "分数=1.0979, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "# 输入文本查询，返回文档+分数\n",
    "docs_with_scores = persist_db.similarity_search_with_score(\n",
    "    query=\"安徽送变电工程有限公司\",\n",
    "    k=3,\n",
    "    # filter={\"region\": \"安徽\"}  # 按元数据过滤（只返回安徽地区的文档）\n",
    ")\n",
    "\n",
    "# 打印结果\n",
    "for doc, score in docs_with_scores:\n",
    "    print(f\"分数={score:.4f}, 内容={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ccdf07c",
   "metadata": {},
   "source": [
    "# max_marginal_relevance_search_by_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "91c6c087",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "idx:0, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:1, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:2, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:3, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "query_embedding = embedding_model.embed_query(\"安徽送变电工程有限公司\")\n",
    "\n",
    "# 搜索多样性结果：先获取20条候选（fetch_k），再从中选5条（k），lambda_mult=0.5平衡相关性和多样性\n",
    "diverse_docs = persist_db.max_marginal_relevance_search_by_vector(\n",
    "    embedding=query_embedding,\n",
    "    k=5,\n",
    "    fetch_k=20,\n",
    "    lambda_mult=0.6  # 增大该值更侧重相关性，减小更侧重多样性\n",
    ")\n",
    "\n",
    "# 打印结果（内容差异会比普通相似搜索更大）\n",
    "for idx, doc in enumerate(diverse_docs):\n",
    "    print(f\"idx:{idx}, 内容={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "479a32e5",
   "metadata": {},
   "source": [
    "# max_marginal_relevance_search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "63be6f11",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "idx:0, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:1, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:2, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n",
      "idx:3, 内容=气候变化和能源问题是当前突出的全球性挑战，能源低碳发展关乎人类未来。“十四五”时期，我国建成全球最大、发展最快的可再生能源体系。全社会消费的每3度电中就有1度是绿电。\n",
      "\n",
      "　　建设能源强国，持续提高新能源供给比重，推进化石能源安全可靠有序替代，不仅将加快推动经济社会绿色低碳转型，有效落实“双碳”战略目标；也有助于利用我国新能源“绿电多”的优势，打破产业发展过程中面临的国际绿色壁垒，提升出口产品的竞争力。\n",
      "\n",
      "　　甘肃—浙江±800千伏特高压直流输电工程线路工程现场，江苏省送变电有限公司施工人员正在组立铁塔。史俊摄\n",
      "\n",
      "　　同时，也能为共同应对全球气候变化提供中国方案，进一步塑造我国在全球能源转型发展中的引领力。数据显示，我国出口的风电光伏产品，“十四五”时期累计为其他国家减少碳排放约41亿吨，为全球低碳转型作出重大贡献。\n",
      "\n",
      "　　建设能源强国，我国已具备诸多有利条件。“十四五”时期，我国能源多元供应体系不断健全，世界能源生产第一大国地位稳固，能源生产总量全球占比超五分之一，能源自给率保持在80%以上，能源消费增量90%以上由国内自主保障。\n",
      "\n",
      "　　看化石能源，我国建设能源强国的短板主要是油气对外依存度较高，但随着化石能源消费依次达峰，油气对外依存度将逐步下降至合理水平。\n",
      "\n",
      "　　看新能源，“十四五”时期，新能源发电装机首次超过火电装机规模，水电、风电、太阳能发电、生物质发电装机均稳居世界第一。我国为全球贡献了80%以上的光伏组件和70%的风电装备。\n",
      "\n",
      "　　据悉，到“十五五”末，我国新增用电需求绝大部分将由新增清洁能源发电量满足。期待更多“风吹”“日晒”“水流”转化为发展绿能，更多化石能源清洁高效利用，助力能源饭碗端稳端牢，为基本实现社会主义现代化奠定更加坚实的基础。\n"
     ]
    }
   ],
   "source": [
    "# 输入文本，返回多样性结果\n",
    "diverse_docs = persist_db.max_marginal_relevance_search(\n",
    "    query=\"安徽送变电工程有限公司\",\n",
    "    k=4,\n",
    "    fetch_k=15,\n",
    "    lambda_mult=0.4\n",
    ")\n",
    "\n",
    "for idx, doc in enumerate(diverse_docs):\n",
    "    print(f\"idx:{idx}, 内容={doc.page_content}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4e50204",
   "metadata": {},
   "source": [
    "# 操作csv文档，并向量化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c6f02b98",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_text_splitters import CharacterTextSplitter\n",
    "from langchain_community.document_loaders import CSVLoader\n",
    "from langchain_ollama import OllamaEmbeddings\n",
    "from langchain_community import Chroma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "808245a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "loader = CSVLoader(\"./asset/load/03-load.csv\", encoding='utf-8')\n",
    "pages = loader.load_and_split()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fd35ec5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 文本拆分（第2次拆分）\n",
    "text_spliter = CharacterTextSplitter.from_tiktoken_encoder(chunk_size=500)\n",
    "docs = text_spliter.split_documents(pages)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12e9c12c",
   "metadata": {},
   "outputs": [],
   "source": [
    "db_path = './chroma_db'\n",
    "db = Chroma.from_documents(docs, embeddings, persist_directory=db_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb14686f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1.导入相关依赖\n",
    "from langchain_text_splitters import CharacterTextSplitter\n",
    "from langchain_community.document_loaders import CSVLoader\n",
    "from langchain_ollama import OllamaEmbeddings\n",
    "from langchain_community import Chroma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "36d6f1f5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 2.定义文档\n",
    "from langchain_core.documents import Document\n",
    "\n",
    "raw_documents = [\n",
    "    # 水果类\n",
    "    Document(\n",
    "        page_content=\"芒果是漆树科芒果属热带水果，原产于印度半岛。果实多为肾形或椭圆形，果皮颜色从青绿色到深黄色不等，果肉细腻香甜，富含 β- 胡萝卜素和膳食纤维。除直接生食外，还可制作果汁、果酱、芒果糯米饭等美食。\",\n",
    "        metadata={\"source\": \"水果\", \"type\": \"热带植物\"},\n",
    "    ),\n",
    "    # 蔬菜类\n",
    "    Document(\n",
    "        page_content=\"西兰花是十字花科芸薹属蔬菜，起源于地中海东部。其食用部分为绿色的花球，由无数细小的花蕾聚合而成，口感脆嫩清香，富含维生素 C、叶酸和萝卜硫素。常见做法有清炒、焯水凉拌、搭配肉类烤制。\",\n",
    "        metadata={\"source\": \"蔬菜\", \"type\": \"花菜类植物\"},\n",
    "    ),\n",
    "    # 动物类（海洋哺乳动物）\n",
    "    Document(\n",
    "        page_content=\"海豚是齿鲸亚目海豚科哺乳动物，广泛分布于全球各大洋。它们具有极高的智商和复杂的社交行为，通过回声定位导航和捕猎，主要以鱼类、乌贼为食。海豚常被视为友好的象征，也是海洋公园中的热门动物。\",\n",
    "        metadata={\"source\": \"动物\", \"type\": \"海洋哺乳动物\"},\n",
    "    ),\n",
    "    # 动物类（啮齿类）\n",
    "    Document(\n",
    "        page_content=\"仓鼠是啮齿目仓鼠科小型哺乳动物，原产于亚洲和欧洲部分地区。体型圆润，尾巴短小，毛色有金棕、银白、三线等多种，性格温顺胆小，以谷物、种子、蔬菜为食。因饲养简便、外形可爱，成为广受欢迎的宠物。\",\n",
    "        metadata={\"source\": \"动物\", \"type\": \"啮齿类哺乳动物\"},\n",
    "    ),\n",
    "    # 生物类（灵长目）\n",
    "    Document(\n",
    "        page_content=\"黑猩猩是灵长目人科黑猩猩属动物，与人类亲缘关系最近，基因相似度高达 98% 以上。它们栖息在非洲热带雨林，过着群居生活，会使用工具获取食物（如用树枝钓白蚁），具有情感表达能力和学习行为。\",\n",
    "        metadata={\"source\": \"生物\", \"type\": \"非人灵长类\"},\n",
    "    ),\n",
    "    # 天文类\n",
    "    Document(\n",
    "        page_content=\"月球是地球唯一的天然卫星，直径约 3476 公里，距离地球约 38 万公里。它本身不发光，通过反射太阳光呈现不同月相，对地球的潮汐现象有显著影响。月球表面布满环形山、月海和月陆，是人类唯一登陆过的地外天体。\",\n",
    "        metadata={\"source\": \"天文\", \"type\": \"卫星\"},\n",
    "    ),\n",
    "    # 历史类\n",
    "    Document(\n",
    "        page_content=\"故宫博物院位于北京中轴线中心，是明清两代皇家宫殿，旧称紫禁城。始建于明永乐十八年，占地约 72 万平方米，拥有宫殿楼宇 9000 余间，珍藏文物 186 万余件。其建筑布局严谨对称，是中国古代宫殿建筑的巅峰之作，现为世界文化遗产。\",\n",
    "        metadata={\"source\": \"历史\", \"type\": \"皇家建筑\"},\n",
    "    ),\n",
    "    # 物理类\n",
    "    Document(\n",
    "        page_content=\"相对论是爱因斯坦提出的物理学理论，分为狭义相对论（1905 年）和广义相对论（1915 年）。狭义相对论提出光速不变原理和相对性原理，颠覆了经典力学的绝对时空观；广义相对论则将引力解释为时空弯曲的效应，成功预言了黑洞、引力透镜等现象。\",\n",
    "        metadata={\"source\": \"物理\", \"type\": \"基础科学\"},\n",
    "    ),\n",
    "    # 文学类\n",
    "    Document(\n",
    "        page_content=\"《三国演义》是中国古典文学四大名著之一，作者罗贯中。小说以东汉末年到西晋统一的历史为背景，讲述了魏、蜀、吴三国争霸的故事，塑造了诸葛亮、曹操、关羽等众多经典人物，兼具历史真实性与艺术感染力。\",\n",
    "        metadata={\"source\": \"文学\", \"type\": \"历史演义小说\"},\n",
    "    ),\n",
    "    # 医学类\n",
    "    Document(\n",
    "        page_content=\"流感病毒是正粘病毒科的 RNA 病毒，分为甲、乙、丙、丁四型，其中甲型流感病毒易发生变异。它主要通过飞沫和接触传播，症状包括高热、头痛、肌肉酸痛、呼吸道不适，易引发并发症。每年接种流感疫苗是最有效的预防手段。\",\n",
    "        metadata={\"source\": \"医学\", \"type\": \"呼吸道病毒\"},\n",
    "    ),\n",
    "    # 饮品类\n",
    "    Document(\n",
    "        page_content=\"普洱茶是中国云南特有的发酵茶，属于黑茶类。以云南大叶种晒青毛茶为原料，经渥堆发酵等工艺制成，茶汤色泽红浓透亮，滋味醇厚回甘，富含茶多酚和茶多糖。根据储存方式不同，可分为生普和熟普，具有越陈越香的特点。\",\n",
    "        metadata={\"source\": \"饮品\", \"type\": \"发酵茶\"},\n",
    "    ),\n",
    "    # 计算机类\n",
    "    Document(\n",
    "        page_content=\"Python 是一种解释型、面向对象的编程语言，由吉多・范罗苏姆于 1991 年发布。它语法简洁优雅，可读性强，拥有丰富的第三方库，广泛应用于数据分析、人工智能、Web 开发、自动化测试等领域，是编程入门的热门选择。\",\n",
    "        metadata={\"source\": \"计算机\", \"type\": \"编程语言\"},\n",
    "    ),\n",
    "    # 水生生物类（食用鱼类）\n",
    "    Document(\n",
    "        page_content=\"三文鱼是冷水性溯河洄游鱼类，背部呈青灰色，肉质橙红富含Omega-3，繁殖期会从海洋洄游至淡水河流产卵。\",\n",
    "        metadata={\"source\": \"水生生物\", \"type\": \"食用鱼类\"},\n",
    "    ),\n",
    "    # 水生生物类（无脊椎动物）\n",
    "    Document(\n",
    "        page_content=\"水母是海洋中的无脊椎动物，身体呈透明伞状，边缘有触手，部分种类能发光，通过喷水推进移动。\",\n",
    "        metadata={\"source\": \"水生生物\", \"type\": \"无脊椎动物\"},\n",
    "    ),\n",
    "    # 乐器\n",
    "    Document(\n",
    "        page_content=\"小提琴是一种弦乐器，有四根弦，通过弓摩擦弦发声，音色悠扬，是交响乐团的核心乐器之一。\",\n",
    "        metadata={\"source\": \"乐器\", \"type\": \"弦乐器\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"架子鼓是打击乐器的组合，包括军鼓、踩镲、嗵鼓等部件，常用于流行、摇滚等音乐类型的伴奏。\",\n",
    "        metadata={\"source\": \"乐器\", \"type\": \"打击乐器\"},\n",
    "    ),\n",
    "    # 交通工具\n",
    "    Document(\n",
    "        page_content=\"高铁是时速超过250公里的铁路列车，采用动车组技术，具有准时、舒适的特点，广泛用于城市间长途运输。\",\n",
    "        metadata={\"source\": \"交通工具\", \"type\": \"轨道交通\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"帆船依靠风力推动前进，船体轻盈，有单桅、双桅等类型，既是体育运动器材，也可用于休闲航行。\",\n",
    "        metadata={\"source\": \"交通工具\", \"type\": \"水上运输工具\"},\n",
    "    ),\n",
    "    # 航天器\n",
    "    Document(\n",
    "        page_content=\"空间站是在近地轨道运行的载人航天器，可长期驻留宇航员，用于开展空间科学实验和技术试验。\",\n",
    "        metadata={\"source\": \"航天器\", \"type\": \"载人航天器\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"卫星是环绕行星运行的人造天体，可用于通信、气象观测、导航等，按轨道分为地球同步卫星和极地卫星等。\",\n",
    "        metadata={\"source\": \"航天器\", \"type\": \"无人航天器\"},\n",
    "    ),\n",
    "    # 调料\n",
    "    Document(\n",
    "        page_content=\"肉桂是樟科植物的树皮，晒干后呈红棕色卷状，气味芳香，常用于烘焙、炖煮等料理的调味。\",\n",
    "        metadata={\"source\": \"调料\", \"type\": \"香辛料\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"酱油是大豆发酵制成的液体调味品，颜色深褐，咸鲜适口，是东亚烹饪中常用的基础调料。\",\n",
    "        metadata={\"source\": \"调料\", \"type\": \"发酵调味品\"},\n",
    "    ),\n",
    "    # 疾病\n",
    "    Document(\n",
    "        page_content=\"流感是由流感病毒引起的急性呼吸道传染病，症状包括发热、咳嗽、乏力，可通过飞沫传播。\",\n",
    "        metadata={\"source\": \"疾病\", \"type\": \"病毒性疾病\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"糖尿病是一种代谢性疾病，因胰岛素分泌不足或作用缺陷导致血糖升高，长期可能损害心脏、肾脏等器官。\",\n",
    "        metadata={\"source\": \"疾病\", \"type\": \"代谢性疾病\"},\n",
    "    ),\n",
    "    # 动物类\n",
    "    Document(\n",
    "        page_content=\"斑马是非洲草原特有的马科动物，黑白相间的条纹是其显著特征，这些条纹可能用于群体识别或迷惑捕食者。它们通常以草本植物为食，群居生活。\",\n",
    "        metadata={\"source\": \"野生动物\", \"type\": \"哺乳动物\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"鹦鹉是热带地区常见的鸟类，羽毛色彩艳丽，部分种类能模仿人类语言。它们主要以坚果、果实和种子为食，脚趾对生，适合抓握树枝。\",\n",
    "        metadata={\"source\": \"鸟类\", \"type\": \"宠物/野生动物\"},\n",
    "    ),\n",
    "    # 植物类\n",
    "    Document(\n",
    "        page_content=\"玫瑰是蔷薇科灌木，花瓣层层叠叠，花色丰富，常用于观赏和制作香水。其枝干有刺，喜阳光充足的环境，花期通常在春季至秋季。\",\n",
    "        metadata={\"source\": \"花卉\", \"type\": \"观赏植物\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"小麦是温带地区广泛种植的谷物，秸秆中空，穗状花序顶生，籽粒富含淀粉，是制作面粉的主要原料，可加工成面包、面条等食品。\",\n",
    "        metadata={\"source\": \"农作物\", \"type\": \"粮食植物\"},\n",
    "    ),\n",
    "    # 物品类\n",
    "    Document(\n",
    "        page_content=\"紫砂壶是中国特有的手工陶土茶具，以江苏宜兴产的最为著名，透气性好，适合冲泡乌龙茶，长期使用后壶身会形成包浆。\",\n",
    "        metadata={\"source\": \"工艺品\", \"type\": \"茶具\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"冲锋衣是户外爱好者常用的功能性服装，采用防水透气面料，接缝处有压胶处理，能抵御风雨，适合登山、徒步等场景。\",\n",
    "        metadata={\"source\": \"服饰\", \"type\": \"户外装备\"},\n",
    "    ),\n",
    "    # 自然现象类\n",
    "    Document(\n",
    "        page_content=\"极光多见于南北极地区的高纬度夜空，是太阳带电粒子与地球大气层中的气体碰撞产生的发光现象，颜色以绿色最为常见。\",\n",
    "        metadata={\"source\": \"自然现象\", \"type\": \"天文现象\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"海啸是由海底地震、火山爆发或陨石撞击引发的巨型海浪，传播速度极快，到达岸边时会形成破坏性巨浪，对沿海地区造成严重影响。\",\n",
    "        metadata={\"source\": \"自然现象\", \"type\": \"地质灾害\"},\n",
    "    ),\n",
    "]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69ce09e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 3. 创建嵌入模型\n",
    "from langchain_ollama import OllamaEmbeddings\n",
    "embedding_model = OllamaEmbeddings(\n",
    "    base_url=\"http://host.docker.internal:11434\", # 仅仅因为我的环境在docker里，ollama装在windows系统里。\n",
    "    # base_url=\"http://localhost:11434\",\n",
    "    model=\"bge-m3:latest\"\n",
    ")\n",
    "# 4.创建向量数据库\n",
    "db = Chroma.from_documents(\n",
    "documents=raw_documents,\n",
    "embedding=embedding_model,\n",
    "persist_directory=\"./asset/vector/chroma-3\",\n",
    ")\n",
    "# 5. 检索示例（返回前3个最相关结果）\n",
    "# 相似性检索（similarity_search）\n",
    "query = \"哺乳动物\"\n",
    "docs = db.similarity_search(query, k=3) # k=3表示返回3个最相关文档\n",
    "print(f\"查询: '{query}' 的结果:\")\n",
    "for i, doc in enumerate(docs, 1):\n",
    "    print(f\"\\n结果 {i}:\")\n",
    "    print(f\"内容: {doc.page_content}\")\n",
    "    print(f\"元数据: {doc.metadata}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "350c42a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 支持直接对问题向量查询（similarity_search_by_vector）\n",
    "query = \"哺乳动物\"\n",
    "embedding_vector = embedding_model.embed_query(query)\n",
    "docs = db.similarity_search_by_vector(embedding_vector, k=3)\n",
    "print(f\"查询: '{query}' 的结果:\")\n",
    "for i, doc in enumerate(docs, 1):\n",
    "    print(f\"\\n结果 {i}:\")\n",
    "    print(f\"内容: {doc.page_content}\")\n",
    "    print(f\"元数据: {doc.metadata}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "762cff0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 相似性检索，支持过滤元数据（filter）\n",
    "query = \"哺乳动物\"\n",
    "docs = db.similarity_search(\n",
    "query=query,\n",
    "k=3,\n",
    "filter={\"source\": \"动物\"})\n",
    "for i, doc in enumerate(docs, 1):\n",
    "    print(f\"\\n结果 {i}:\")\n",
    "    print(f\"内容: {doc.page_content}\")\n",
    "    print(f\"元数据: {doc.metadata}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7451b695",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 通过L2距离分数进行搜索（similarity_search_with_score\n",
    "docs = db.similarity_search_with_score(\n",
    "\"量子力学是什么?\"\n",
    ")\n",
    "for doc, score in docs:\n",
    "    print(f\" [L2距离得分={score:.3f}] {doc.page_content} [{doc.metadata}]\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5afc5af9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 通过余弦相似度分数进行搜索（_similarity_search_with_relevance_scores）\n",
    "# 说明：分数值越接近1（上限），检索到的文档越和问题相似。\n",
    "\n",
    "docs = db._similarity_search_with_relevance_scores(\n",
    "\"量子力学是什么?\"\n",
    ")\n",
    "for doc, score in docs:\n",
    "    print(f\"* [余弦相似度得分={score:.3f}] {doc.page_content} [{doc.metadata}]\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d0d00bea",
   "metadata": {},
   "outputs": [],
   "source": [
    "# MMR（最大边际相关性，max_marginal_relevance_search）\n",
    "# MMR 是一种平衡 相关性 和 多样性 的检索策略，避免返回高度相似的冗余结果。\n",
    "docs = db.max_marginal_relevance_search(\n",
    "query=\"量子力学是什么\",\n",
    "lambda_mult=0.8, # 侧重相似性\n",
    ")\n",
    "print(\"🔍 关于【量子力学是什么】的搜索结果：\")\n",
    "print(\"=\" * 50)\n",
    "for i, doc in enumerate(docs):\n",
    "    print(f\"\\n📖 结果 {i+1}:\")\n",
    "    print(f\"📌 内容: {doc.page_content}\")\n",
    "    print(f\"🏷 标签: {', '.join(f'{k}={v}' for k, v in doc.metadata.items())}\")\n",
    "# 参数说明： lambda_mult 参数值介于 0 到 1 之间，用于确定结果之间的多样性程度，其中 0 对应最大\n",
    "# 多样性，1 对应最小多样性。默认值为 0.5。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2f59c47b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f349cc56",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f6af38d1",
   "metadata": {},
   "source": [
    "# update_documents"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "3fbbd758",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文档更新完成\n"
     ]
    }
   ],
   "source": [
    "from langchain_core.documents import Document\n",
    "\n",
    "# 假设原文档ID为[\"doc1\", \"doc2\"]，需要更新这两个文档\n",
    "new_docs = [\n",
    "    Document(\n",
    "        page_content=\"安徽送变电工程有限公司成立于1958年，新补充资质信息：甲级电力工程施工资质\",\n",
    "        metadata={\"company\": \"安徽送变电\"}\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"安徽送变电2024年营收数据更新：15.6亿元\",\n",
    "        metadata={\"company\": \"安徽送变电\"}\n",
    "    )\n",
    "]\n",
    "\n",
    "# 按ID更新文档（ids与new_docs需一一对应）\n",
    "persist_db.update_documents(\n",
    "    ids=[\"doc1\", \"doc2\"],  # 原文档的ID\n",
    "    documents=new_docs     # 新的文档内容\n",
    ")\n",
    "\n",
    "print(\"文档更新完成\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e8f77e5",
   "metadata": {},
   "source": [
    "# delete_collection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "ce638940",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "集合已删除\n"
     ]
    }
   ],
   "source": [
    "# 删除集合（删除后无法恢复）\n",
    "# persist_db.delete_collection()\n",
    "print(\"集合已删除\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "langchain-course (3.10.12)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
